#include <iostream>

#include "director.h"
#include "concrete_builder_a.h"
#include "concrete_builder_b.h"

int main() {
  DirectorPtr director = std::make_shared<Director>();

  BuilderPtr builder = std::make_shared<ConcreteBuilderA>();
  director->setBuilder(builder);
  director->construct();
  auto product = builder->getProduct();
  product->display();

  builder = std::make_shared<ConcreteBuilderB>();
  director->setBuilder(builder);
  director->construct();
  product = builder->getProduct();
  product->display();

  return 0;
}
